<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Whisper: CFrequencyScrambling Class Reference</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />

<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>

</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">Whisper
   
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="#pri-static-attribs">Static Private Attributes</a>  </div>
  <div class="headertitle">
<div class="title">CFrequencyScrambling Class Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="CFrequencyScrambling" --><!-- doxytag: inherits="CCryptoEngine" -->
<p>Encrypts and decrypts audio samples using the Frequency Permutation algorithm.  
 <a href="classCFrequencyScrambling.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="frequency__scrambling_8h_source.html">frequency_scrambling.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for CFrequencyScrambling:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classCFrequencyScrambling.png" usemap="#CFrequencyScrambling_map" alt=""/>
  <map id="CFrequencyScrambling_map" name="CFrequencyScrambling_map">
<area href="classCCryptoEngine.html" title="Implementation of a crypto engine." alt="CCryptoEngine" shape="rect" coords="0,56,145,80"/>
<area href="classIEmbeddingEngine.html" title="Embedding engine base class." alt="IEmbeddingEngine" shape="rect" coords="0,0,145,24"/>
</map>
 </div></div>

<p><a href="classCFrequencyScrambling-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCFrequencyScrambling.html#adaee180f0273a4faf89fc1db28506bb0">CFrequencyScrambling</a> (<a class="el" href="structNAudioFormats_1_1SStreamInfo.html">NAudioFormats::SStreamInfo</a> ioStreamInfo)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCFrequencyScrambling.html#aaa31b315df0f4bc566857f299c30399a">~CFrequencyScrambling</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCFrequencyScrambling.html#a7cd3434ecb1b1a4a3033c84f2ca0968e">encrypt</a> (double *pData, unsigned int pCount)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCFrequencyScrambling.html#a833eb843ff0de97a801f7f12a5807f60">decrypt</a> (double *pData, unsigned int pCount)</td></tr>
<tr><td colspan="2"><h2><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCFrequencyScrambling.html#a5b7467e7a2d40a1643186b7066c1fdb9">changeSettings</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCFrequencyScrambling.html#ad117dc8d000544f06161c83d39e96aae">getSamplesNeeded</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCFrequencyScrambling.html#adad5aa7d3855c27ae5e6de65de00bdcc">getPermutationVector</a> (unsigned int *pVector, unsigned int pCount, unsigned int pAlgorithm, unsigned int pMin, unsigned int pMax)</td></tr>
<tr><td colspan="2"><h2><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCFrequencyScrambling.html#a3bae8018b5168d1fb97dea442dae7edd">dencrypt</a> (double *pData, unsigned int pCount, bool bEncrypt)</td></tr>
<tr><td colspan="2"><h2><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCFrequencyScrambling.html#aaff3591a862dd61ba4334280bbea9892">mPermutationMode</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The used permutatino mode like SWAPPING_AES.  <a href="#aaff3591a862dd61ba4334280bbea9892"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCFrequencyScrambling.html#a370eb8dbdeee900d84ac0242b2446dc8">mEncryptionMode</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The used encryption mode like FFT.  <a href="#a370eb8dbdeee900d84ac0242b2446dc8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCFrequencyScrambling.html#ab19eb033f2a4f75994afa0e4a4c9ae0e">mSamplesNeeded</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Defines how many Samples are needed at en-/decryption.  <a href="#ab19eb033f2a4f75994afa0e4a4c9ae0e"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pri-static-attribs"></a>
Static Private Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCFrequencyScrambling.html#a47c6e1f6437bce45fff18bda1d9eb652">sIniSectionName</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCFrequencyScrambling.html#a4fe5c4e10a1a091aff8106c57d41a63b">sPERMUTATION_NULL</a> = 0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Permutation has no effect. Only for testing.  <a href="#a4fe5c4e10a1a091aff8106c57d41a63b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCFrequencyScrambling.html#a2b2e7e8452fbfedd392254cb763da2bc">sPERMUTATION_REVERSE</a> = 1</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Frequencies become inversed.  <a href="#a2b2e7e8452fbfedd392254cb763da2bc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCFrequencyScrambling.html#a646bcfc2cf645d087ab27b3b8e591017">sPERMUTATION_SWAPPING_AES</a> = 2</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">AES is used for the permutation.  <a href="#a646bcfc2cf645d087ab27b3b8e591017"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCFrequencyScrambling.html#a0c0c9486bcc82cf31240e81b9ca1bfc6">sPERMUTATION_SWAPPING_AES_BLOCKED</a> = 3</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Like SWAPPING_AES but it is done in blocks.  <a href="#a0c0c9486bcc82cf31240e81b9ca1bfc6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCFrequencyScrambling.html#ad35e7c68a57aee36d2ae24aac6f8524d">sENCRYPTION_MODE_FFT</a> = 1</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">FFT will be used, for future use.  <a href="#ad35e7c68a57aee36d2ae24aac6f8524d"></a><br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Encrypts and decrypts audio samples using the Frequency Permutation algorithm. </p>
<dl class="author"><dt><b>Author:</b></dt><dd>Bernhard Schildendorfer</dd></dl>
<p>The audio signal is transformed into its frequency components which are afterwards randomly permuted using a cryptographic key. The member variable mSamplesNeeded is very important, because it tells the cryptoEngine how many samples it has to deliver to the encryption and decryption method. </p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="adaee180f0273a4faf89fc1db28506bb0"></a><!-- doxytag: member="CFrequencyScrambling::CFrequencyScrambling" ref="adaee180f0273a4faf89fc1db28506bb0" args="(NAudioFormats::SStreamInfo ioStreamInfo)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CFrequencyScrambling::CFrequencyScrambling </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structNAudioFormats_1_1SStreamInfo.html">NAudioFormats::SStreamInfo</a>&#160;</td>
          <td class="paramname"><em>ioStreamInfo</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="aaa31b315df0f4bc566857f299c30399a"></a><!-- doxytag: member="CFrequencyScrambling::~CFrequencyScrambling" ref="aaa31b315df0f4bc566857f299c30399a" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CFrequencyScrambling::~CFrequencyScrambling </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a5b7467e7a2d40a1643186b7066c1fdb9"></a><!-- doxytag: member="CFrequencyScrambling::changeSettings" ref="a5b7467e7a2d40a1643186b7066c1fdb9" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int CFrequencyScrambling::changeSettings </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>called by the protocol engine upon settings change (e.g. change of embedding parameters) calls setProperties and initCrypto if this method gets overwritten, the subclass should call setProperties and initCrypto </p>

<p>Reimplemented from <a class="el" href="classCCryptoEngine.html#ae509c020577b0be6b45f63a78304314f">CCryptoEngine</a>.</p>

</div>
</div>
<a class="anchor" id="a833eb843ff0de97a801f7f12a5807f60"></a><!-- doxytag: member="CFrequencyScrambling::decrypt" ref="a833eb843ff0de97a801f7f12a5807f60" args="(double *pData, unsigned int pCount)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int CFrequencyScrambling::decrypt </td>
          <td>(</td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>pData</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Decrypts pCount bytes from data and write them back. pCount should never be too little data for encryption because mSamplesNeeded tells the cryptoEngine to buffer that amount of data for this method</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">data</td><td>double array with amplitude values from -1.0 to 1.0 </td></tr>
    <tr><td class="paramname">pCount</td><td>count of audio samples to work with </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 for success, &gt;0 for success and discard of samples for next call, &lt;0 for an error </dd></dl>

<p>Implements <a class="el" href="classCCryptoEngine.html#a3405f0d5fc53cce53f35e2ee03cfb95e">CCryptoEngine</a>.</p>

</div>
</div>
<a class="anchor" id="a3bae8018b5168d1fb97dea442dae7edd"></a><!-- doxytag: member="CFrequencyScrambling::dencrypt" ref="a3bae8018b5168d1fb97dea442dae7edd" args="(double *pData, unsigned int pCount, bool bEncrypt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int CFrequencyScrambling::dencrypt </td>
          <td>(</td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>pData</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>bEncrypt</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Called by either <a class="el" href="classCFrequencyScrambling.html#a7cd3434ecb1b1a4a3033c84f2ca0968e">encrypt()</a> or <a class="el" href="classCFrequencyScrambling.html#a833eb843ff0de97a801f7f12a5807f60">decrypt()</a>. Because both of these methods do nearly the same, they are summarized in <a class="el" href="classCFrequencyScrambling.html#a3bae8018b5168d1fb97dea442dae7edd">dencrypt()</a>.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">data</td><td>double array with amplitude values from 0 to 1 </td></tr>
    <tr><td class="paramname">pCount</td><td>count of audio samples to work with </td></tr>
    <tr><td class="paramname">bEncrypt</td><td>Indicates weither it should be encrypted or decrypted. true=encryption, false=decryption </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>depends on bEncrypt, see <a class="el" href="classCFrequencyScrambling.html#a7cd3434ecb1b1a4a3033c84f2ca0968e">encrypt()</a> and <a class="el" href="classCFrequencyScrambling.html#a833eb843ff0de97a801f7f12a5807f60">decrypt()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a7cd3434ecb1b1a4a3033c84f2ca0968e"></a><!-- doxytag: member="CFrequencyScrambling::encrypt" ref="a7cd3434ecb1b1a4a3033c84f2ca0968e" args="(double *pData, unsigned int pCount)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int CFrequencyScrambling::encrypt </td>
          <td>(</td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>pData</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Encrypts pCount bytes from data and write them back. pCount should never be too less data for encryption because mSamplesNeeded tells the cryptoEngine to buffer that amount of data for this method</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">data</td><td>double array with amplitude values from -1.0 to 1.0 </td></tr>
    <tr><td class="paramname">pCount</td><td>count of audio samples to work with </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 for success, &gt;0 for success and discard of samples for next call, &lt;0 for a&lt;n error </dd></dl>

<p>Implements <a class="el" href="classCCryptoEngine.html#a19175d4e3c5177453e1b7af2bb956bb8">CCryptoEngine</a>.</p>

</div>
</div>
<a class="anchor" id="adad5aa7d3855c27ae5e6de65de00bdcc"></a><!-- doxytag: member="CFrequencyScrambling::getPermutationVector" ref="adad5aa7d3855c27ae5e6de65de00bdcc" args="(unsigned int *pVector, unsigned int pCount, unsigned int pAlgorithm, unsigned int pMin, unsigned int pMax)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int CFrequencyScrambling::getPermutationVector </td>
          <td>(</td>
          <td class="paramtype">unsigned int *&#160;</td>
          <td class="paramname"><em>pVector</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pAlgorithm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pMin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pMax</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Calculates the permutation vector needed for both encryption and decryption. The vector contains a unique numbers of 0 to pCount in Random order.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">pVector</td><td>integer array of size pCount where the permutation vector should be stored </td></tr>
    <tr><td class="paramname">pCount</td><td>size of pVector </td></tr>
    <tr><td class="paramname">pAlgorithm</td><td>Used algorithm for the calculation. The algorithm can have the values of the static variables sPERMUTATION_* </td></tr>
    <tr><td class="paramname">pMin</td><td>Indexes below this one are not permuted </td></tr>
    <tr><td class="paramname">pMax</td><td>Indexes above this one are not permuted </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ad117dc8d000544f06161c83d39e96aae"></a><!-- doxytag: member="CFrequencyScrambling::getSamplesNeeded" ref="ad117dc8d000544f06161c83d39e96aae" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int CFrequencyScrambling::getSamplesNeeded </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Indicates the amount of Samples which are needed for encryption and decryption. This amount of samples will be buffered in cryptoEngine. Exactly that many samples will be passed to the <a class="el" href="classCFrequencyScrambling.html#a7cd3434ecb1b1a4a3033c84f2ca0968e">encrypt()</a> and <a class="el" href="classCFrequencyScrambling.html#a833eb843ff0de97a801f7f12a5807f60">decrypt()</a> method. If the sub-class want's a different size of samples it can override this method and return the wanted size.Per default the FFT Framesize will be returned.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>sample count which are needed for encryption and decryption </dd></dl>

<p>Reimplemented from <a class="el" href="classCCryptoEngine.html#ab83ba5cc5cd5049b9c0c7581b87eca52">CCryptoEngine</a>.</p>

</div>
</div>
<hr/><h2>Member Data Documentation</h2>
<a class="anchor" id="a370eb8dbdeee900d84ac0242b2446dc8"></a><!-- doxytag: member="CFrequencyScrambling::mEncryptionMode" ref="a370eb8dbdeee900d84ac0242b2446dc8" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int <a class="el" href="classCFrequencyScrambling.html#a370eb8dbdeee900d84ac0242b2446dc8">CFrequencyScrambling::mEncryptionMode</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The used encryption mode like FFT. </p>

</div>
</div>
<a class="anchor" id="aaff3591a862dd61ba4334280bbea9892"></a><!-- doxytag: member="CFrequencyScrambling::mPermutationMode" ref="aaff3591a862dd61ba4334280bbea9892" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int <a class="el" href="classCFrequencyScrambling.html#aaff3591a862dd61ba4334280bbea9892">CFrequencyScrambling::mPermutationMode</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The used permutatino mode like SWAPPING_AES. </p>

</div>
</div>
<a class="anchor" id="ab19eb033f2a4f75994afa0e4a4c9ae0e"></a><!-- doxytag: member="CFrequencyScrambling::mSamplesNeeded" ref="ab19eb033f2a4f75994afa0e4a4c9ae0e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int <a class="el" href="classCFrequencyScrambling.html#ab19eb033f2a4f75994afa0e4a4c9ae0e">CFrequencyScrambling::mSamplesNeeded</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Defines how many Samples are needed at en-/decryption. </p>

</div>
</div>
<a class="anchor" id="ad35e7c68a57aee36d2ae24aac6f8524d"></a><!-- doxytag: member="CFrequencyScrambling::sENCRYPTION_MODE_FFT" ref="ad35e7c68a57aee36d2ae24aac6f8524d" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const int <a class="el" href="classCFrequencyScrambling.html#ad35e7c68a57aee36d2ae24aac6f8524d">CFrequencyScrambling::sENCRYPTION_MODE_FFT</a> = 1<code> [static, private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>FFT will be used, for future use. </p>

</div>
</div>
<a class="anchor" id="a47c6e1f6437bce45fff18bda1d9eb652"></a><!-- doxytag: member="CFrequencyScrambling::sIniSectionName" ref="a47c6e1f6437bce45fff18bda1d9eb652" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const std::string <a class="el" href="classCFrequencyScrambling.html#a47c6e1f6437bce45fff18bda1d9eb652">CFrequencyScrambling::sIniSectionName</a><code> [static, private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Reimplemented from <a class="el" href="classCCryptoEngine.html#a771dc5672c3690791e03d9492f4f2400">CCryptoEngine</a>.</p>

</div>
</div>
<a class="anchor" id="a4fe5c4e10a1a091aff8106c57d41a63b"></a><!-- doxytag: member="CFrequencyScrambling::sPERMUTATION_NULL" ref="a4fe5c4e10a1a091aff8106c57d41a63b" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const int <a class="el" href="classCFrequencyScrambling.html#a4fe5c4e10a1a091aff8106c57d41a63b">CFrequencyScrambling::sPERMUTATION_NULL</a> = 0<code> [static, private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Permutation has no effect. Only for testing. </p>

</div>
</div>
<a class="anchor" id="a2b2e7e8452fbfedd392254cb763da2bc"></a><!-- doxytag: member="CFrequencyScrambling::sPERMUTATION_REVERSE" ref="a2b2e7e8452fbfedd392254cb763da2bc" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const int <a class="el" href="classCFrequencyScrambling.html#a2b2e7e8452fbfedd392254cb763da2bc">CFrequencyScrambling::sPERMUTATION_REVERSE</a> = 1<code> [static, private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Frequencies become inversed. </p>

</div>
</div>
<a class="anchor" id="a646bcfc2cf645d087ab27b3b8e591017"></a><!-- doxytag: member="CFrequencyScrambling::sPERMUTATION_SWAPPING_AES" ref="a646bcfc2cf645d087ab27b3b8e591017" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const int <a class="el" href="classCFrequencyScrambling.html#a646bcfc2cf645d087ab27b3b8e591017">CFrequencyScrambling::sPERMUTATION_SWAPPING_AES</a> = 2<code> [static, private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>AES is used for the permutation. </p>

</div>
</div>
<a class="anchor" id="a0c0c9486bcc82cf31240e81b9ca1bfc6"></a><!-- doxytag: member="CFrequencyScrambling::sPERMUTATION_SWAPPING_AES_BLOCKED" ref="a0c0c9486bcc82cf31240e81b9ca1bfc6" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const int <a class="el" href="classCFrequencyScrambling.html#a0c0c9486bcc82cf31240e81b9ca1bfc6">CFrequencyScrambling::sPERMUTATION_SWAPPING_AES_BLOCKED</a> = 3<code> [static, private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Like SWAPPING_AES but it is done in blocks. </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="frequency__scrambling_8h_source.html">frequency_scrambling.h</a></li>
<li><a class="el" href="frequency__scrambling_8cxx.html">frequency_scrambling.cxx</a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Defines</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>



<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 25 2012 22:00:43 for Whisper by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.5.1
</small></address>

</body>
</html>
